package com.pro.framework.api.structure;

import java.util.Objects;

/**
 * 接受四个参数且不返回结果的操作
 *
 * @param <T> 第一个参数类型
 * @param <U> 第二个参数类型
 * @param <V> 第三个参数类型
 * @param <W> 第四个参数类型
 */
@FunctionalInterface
public interface QuadConsumer<T, U, V, W> {
    /**
     * 对给定参数执行操作
     *
     * @param t 第一个输入参数
     * @param u 第二个输入参数
     * @param v 第三个输入参数
     * @param w 第四个输入参数
     */
    void accept(T t, U u, V v, W w);

//    /**
//     * 返回一个组合的QuadConsumer，按顺序执行此操作和after操作
//     *
//     * @param after 当前操作后执行的操作
//     * @return 组合操作
//     * @throws NullPointerException 如果after为null
//     */
//    default QuadConsumer<T, U, V, W> andThen(QuadConsumer<? super T, ? super U, ? super V, ? super W> after) {
//        Objects.requireNonNull(after);
//        return (t, u, v, w) -> {
//            accept(t, u, v, w);
//            after.accept(t, u, v, w);
//        };
//    }
}
